Actionable suggestions for activities

ABSTRACT

Methods, systems, and apparatus, including computer programs encoded on a computer storage medium, for providing actionable suggestions are disclosed. In one aspect, a method includes receiving (i) an indication that an event detection module has determined that a shared event of a particular type is presently occurring or has occurred, and (ii) data referencing an attribute associated with the shared event. The method includes selecting, from among multiple output templates that are each associated with a different type of shared event, a particular output template associated with the particular type of shared event detected by the module. The method generates a notification for output using at least (i) the selected particular output template, and (ii) the data referencing the attribute associated with the shared event. The method then provides, for output to a user device, the notification that is generated.

FIELD

The present specification is related to mobile devices.

BACKGROUND

Activities that connect a group of users often result in situationswhere it would be useful to receive notifications indicating thatcertain members of a user group are participating in the same event. Inthe context of computing systems, the notification can be received at auser device while the event is occurring or at a later time after theevent has concluded. It may also be useful to receive, during or afterthe event, notifications that include suggestions for activities oractions associated with the event.

SUMMARY

A computing system is described that automatically detects that aparticular event, such as a shared event, is taking place or took place.This specification describes processes for receiving and analyzing datasignals from user devices associated with individual users within a usergroup to detect the occurrence of a shared event. In response toautomatically detecting the occurrence of a shared event, the computingsystem suggests one or more activities that are, at least in part,related to or associated with the shared event. Suggesting the one ormore activities can include, for example, the computing system analyzingdata signals provided by devices of the users to determine an attributeassociated with the shared event. Values of the data signals canindicate that the one or more users are participating in, or at leastare associated with, a shared event of a particular type. Accordingly,actionable suggestions for one or more activities associated with thedetermined shared event type can be provided to the users.

In one innovative aspect of the specification, a computer-implementedmethod is described, that includes receiving (i) an indication that anevent detection module has determined that a shared event of aparticular type is presently occurring or has occurred, and (ii) datareferencing an attribute associated with the shared event. The methodincludes, selecting, by a computing system, from among multiple outputtemplates that are each associated with a different type of sharedevent, a particular output template associated with the particular typeof shared event that the event detection module has determined ispresently occurring or has occurred, and generating, by the computingsystem, a notification for output using at least (i) the particularoutput template associated with the particular type of shared eventdetermined to be presently occurring or determined to have alreadyoccurred, and (ii) the data referencing the attribute associated withthe shared event. The method further includes, providing, for output toa user device, the notification that is generated using at least (i) theparticular output template, and (ii) the data referencing the attributeassociated with the shared event of the particular type.

In one implementation, the method further includes providing, by thecomputing system and to one or more user devices, at least one activitysuggestion associated with the shared event, the at least one activitysuggestion being based, in part, on at least one of: (i) the particulartype of the shared event; or (ii) the data referencing the attributeassociated with the shared event. In one implementation, selecting theparticular output template associated with the particular type of sharedevent includes, using, by the computing system, one or moremachine-learning algorithms based on analysis of the received datareferencing the attribute associated with the shared event; and inresponse to using the one or more machine-learning algorithms,determining, by the computing system, the particular output template tobe selected.

In one aspect of this implementation, at least one machine-learningalgorithm receives data referencing a plurality of attributes associatedwith the shared event, the plurality of attributes being utilized,during execution of the at least one machine-learning algorithm, totrain a template model used by the computing system to select theparticular output template. In another aspect of this implementation,further method further includes, training, by the computing system, thetemplate model to predict the particular output template to be selected,the template model being trained to predict the particular outputtemplate based on a probability metric associated with an activitysuggestion exceeding a threshold probability metric.

In one implementation, generating the notification for output includes,providing, by the computing system and to a particular user, an activitysuggestion and an application program associated with the activitysuggestion, the application program being configured for use on a userdevice associated with the particular user. In another implementation,each output template of the multiple output templates indicates at leastone activity suggestion and indicates one or more attributes of the atleast one activity suggestion. In yet another implementation, thenotification for output is provided to at least one user deviceassociated with at least one user of a subset of users.

In another innovative aspect of the specification, an electronic systemis described, including one or more processing devices; one or moremachine-readable storage devices for storing instructions that areexecutable by the one or more processing devices to perform operationsincluding, receiving (i) an indication that an event detection modulehas determined that a shared event of a particular type is presentlyoccurring or has occurred, and (ii) data referencing an attributeassociated with the shared event. The operations further include,selecting, by the electronic system, from among multiple outputtemplates that are each associated with a different type of sharedevent, a particular output template associated with the particular typeof shared event that the event detection module has determined ispresently occurring or has occurred, and generating, by the electronicsystem, a notification for output using at least (i) the particularoutput template associated with the particular type of shared eventdetermined to be presently occurring or determined to have alreadyoccurred, and (ii) the data referencing the attribute associated withthe shared event. The operations still further include, providing, foroutput to a user device, the notification that is generated using atleast (i) the particular output template, and (ii) the data referencingthe attribute associated with the shared event of the particular type.

Other implementations of this aspect include corresponding computersystems, apparatus, and computer programs recorded on one or morecomputer storage devices, each configured to perform the actions of themethods. A system of one or more computers can be configured to performparticular operations or actions by virtue of having software, firmware,hardware, or a combination of them installed on the system that inoperation causes or cause the system to perform the actions. One or morecomputer programs can be configured to perform particular operations oractions by virtue of including instructions that, when executed by dataprocessing apparatus, cause the apparatus to perform the actions.

In yet another innovative aspect, a computer-implemented method isdescribed, that includes, receiving an indication that an eventdetection module has determined that an event of a particular type ispresently occurring or has occurred, and selecting, by a computingsystem, a particular output template associated with the particular typeof event that the event detection module has determined is presentlyoccurring or has occurred. The method includes, generating, by thecomputing system, a notification for output using at least theparticular output template associated with the particular type of eventdetermined to be presently occurring or determined to have alreadyoccurred, and providing, for output to a user device, the notificationthat is generated using at least the particular output template.

In one implementation, the method further includes, providing, by thecomputing system and to one or more user devices, at least one activitysuggestion associated with the event, the at least one activitysuggestion being based, in part, on at least one of: (i) the particulartype of the event; or (ii) data referencing an attribute associated withthe event. In one aspect of this implementation, selecting theparticular output template associated with the particular type of eventincludes, using, by the computing system, one or more machine-learningalgorithms based on analysis of the received data referencing theattribute associated with the event; and in response to using the one ormore machine-learning algorithms, determining, by the computing system,the particular output template to be selected. In another aspect, atleast one machine-learning algorithm receives data referencing aplurality of attributes associated with the event, the plurality ofattributes being utilized, during execution of the at least onemachine-learning algorithm, to train a template model used by thecomputing system to select the particular output template.

The subject matter described in this specification can be implemented inparticular implementations and can result in one or more of thefollowing advantages. The computing system of this specification removesthe need to define explicit actionable suggestions embodied in outputactivity templates, but instead automatically analyzes data signals todetect the occurrence of a shared event and automatically selectsactionable suggestions that are associated with the detected sharedevent. By not defining a multitude of explicit actionable suggestions,computing system processes are optimized and processing efficiency in anexample computing environment is improved by minimizing unnecessarycomputations for activity or output template definitions. Shared eventsof a particular type that include at least two users are efficientlydetermined based on, for example, analysis of parameter signalscorresponding to context data and event attributes. Data signal analysisof user devices which are not associated with a particular shared eventis avoided thereby providing enhanced system bandwidth for othercomputations and system transmissions.

The details of one or more implementations of the subject matterdescribed in this specification are set forth in the accompanyingdrawings and the description below. Other features, aspects, andadvantages of the subject matter will become apparent from thedescription, the drawings, and the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is an example computing system for automatic detection of anevent shared among at least two users of a user group.

FIG. 2 illustrates a diagram including modules associated with anexample computing device of the computing system of FIG. 1.

FIG. 3 is a flow diagram of an example process for automatic detectionof an event shared among at least two users of a user group.

FIG. 4 is an example computing system for actionable suggestions of oneor more activities.

FIG. 5 illustrates example activity templates that include multiplesuggestions of one or more activities.

FIG. 6 illustrates a diagram including modules associated with anexample computing device of the computing system of FIG. 4.

FIG. 7 is a flow diagram of an example process for actionablesuggestions of one or more activities.

FIG. 8 is a block diagram of a computing system that can be used inconnection with computer-implemented methods described in thisspecification.

Like reference numbers and designations in the various drawings indicatelike elements.

DETAILED DESCRIPTION

Processes are described that include automatically detecting that aparticular event, such as a shared event, is taking place or took place.A shared event can include an event occurring in real-time in which atleast two users in a group are presently associated with the occurringevent. Additionally, a shared event can include an event that occurredat a past time-period and the at least two users were previouslyassociated with the past event. Within this event context, thisspecification describes novel approaches for automatically detecting theoccurrence of a shared event, shown in FIGS. 1-3. This specificationfurther describes novel approaches for automatically providingactionable suggestions to at least one user associated with the detectedshared event, shown in FIGS. 4-7.

FIG. 1 is an example computing system 100 for automatic detection of anevent shared among at least two users of a user group. System 100generally includes user devices 104 a/b/c and corresponding users 102a/b/c. As shown, user device 104 a is associated with, or owned by, user102 a—Alice, user device 104 b is associated with, or owned by, user 102b—Bob, and user device 104 c is associated with, or owned by, user 102c—Charlie. Example user devices 104 a/b/c include smartphones,laptop/desktop computers, smart televisions, gaming consoles, tabletdevices or other related computing device. As described herein, Alice,Bob and Charlie can form an example user group. In certainimplementations, a subset of the example user group can include Aliceand Bob, Alice and Charlie, or Bob and Charlie.

System 100 detects the occurrence of an event in which participation orassociation with the event is shared among a subset of users of a largeruser group, users 102 a/b/c. A computing device 104 a of a first user102 a in the group provides data signals to server 108 that indicate, atleast, a current context of the first user 102 a, such as a physical,e.g., restaurant, or virtual environment, e.g., online meeting. System100 can use the current context, and related data signal parameters, ofthe first user 102 a to identify another user(s) 102 b to form thesubset of users 102 a/b. A computing device 104 b of the other user 102b in the subset can also provide data signals to server 108. System 100can then compare parameter values of signal data provided by the firstuser 102 a with parameter values of signal data provided by the otheruser 102 b.

For example, system 100 can receive sets of parameter signals from thedevices 104 a/b of the respective users in the subset, i.e., first user102 a and the other user 102 b. The parameter signals can includelocation data and temporal data for the respective users 102 a/b. System100 can compare location and temporal data for the first user 102 a withlocation and temporal data for the other user 102 b. If the comparisonshows that parameter values provided by devices 104 a/b of each user 102a/b in the subset either overlap or substantially match, then system 100can determine that users 102 a/b in the subset are participating in, orassociated with, the same event. System can then indicate to the users102 a/b of the subset that a shared event is occurring or has occurred.

In general, server 108 executes a variety of functions associated withsignals/parameter analysis, including probability determinations forreliable and accurate detection of the occurrence of a shared eventbetween at least two users 102. In response to detecting the occurrenceof a shared event, system 100 indicates to at least one of user 102a/b/c that a subset of the users of a larger user group are allassociated with a shared event.

For example, regarding user 102 a—Alice, system 100 can provide a textdisplay on user device 104 a to indicate, to Alice, that Alice and user102 b—Bob are both involved in a shared event or common activity. Asshown, UI 124 of Alice's user device 104 a can include a short messageservice (SMS) based notification that indicates system 100 has detectedor determined that Alice is with Bob, i.e., that users 102 a and 102 bare participating in a shared event. Likewise, UI 126 of Bob's userdevice 104 b can also include a SMS notification that indicates system100 has detected or determined that Bob is with Alice, i.e., that users102 b and 102 a are participating in a shared event.

In addition to or in lieu of the SMS text display notification viewableon Alice's device, in some implementations, user device 104 a/b/c can beconfigured to include text-to-speech output functionality. In theseimplementations, the text-to-speech function of user device 104 a/b/ccan be activated to cause the device to speak or output audio in anatural manner as it relates to human speech. For example, the audiooutput can correspond to the contents of the SMS text notification of UI124. In some instances, the text-to-speech function can be activatedmanually by user 102 a/b/c. In other instances, the text-to-speechfunction can be activated automatically by a processor of the device inresponse to system 100 detecting the occurrence of a shared event.

As shown, connection 110 can be a confirmatory indication that Alice andBob are both participating in a shared event. In contrast, no connection112 can be a confirmatory indication that user 102 c—Charlie is notassociated with, or participating in, the shared event that includesAlice and Bob. Accordingly, UI 128 of Charlie's user device 104 c willnot include an SMS or other related notification because system 100 hasnot detected or determined that Charlie is with Alice or Bob, or thatuser 102 c is participating in a certain shared event.

In some alternative implementations, connection 110 can indicate thatAlice and Bob share a connection that predates the occurrence of theshared event. In contrast, no connection 112 can indicate that, althoughAlice, Bob, Charlie are each a part of a larger user group, noconnection exists between Alice and Charlie or between Bob and Charliethat predates the occurrence of the shared event. As described in moredetail below, a connection 110 that predates the occurrence of a sharedevent can be a precursory factor used by server 108 and system 100 to,in part, detect that a subset of users are involved in a shared event.

As described in more detail below, processes carried out by system 100can be associated with events or activities that occur in connectionwith environment 106. In some implementations, environment 106 can be avirtual environment 106, a physical environment 106, or a mixedenvironment 106 that includes attributes of both virtual and physicalsettings. Example mixed environments 106 can include two conferencerooms that are connected via a virtual meeting with several people ineach conference room, or in a gaming scenario, multiple groups playingin different locations, such as in an ingress game(s).

Example virtual environments 106, and example corresponding events, caninclude computing sessions associated with virtual meetings, onlinegaming sessions, audio and/or video teleconferencing, digital broadcastssessions, e.g., television shows/content streaming events, etc., or anyother virtual based or electronic computing session shared between atleast two users 102 of a larger user group.

Example physical environments 106 can include venues or locations suchas restaurants, movie theaters, sporting arenas, fitness locations, orany other physical venue or location suitable for hosting an eventshared between at least two users 102 of a larger user group. Exampleshared events or shared activities can include at least two users 102dining at the same restaurant, attending or viewing the same movieshowing, attending the same sporting event, e.g., football game orbasketball game, etc., running the same race event, e.g., 5K or halfmarathon, etc., or any other activity/event shared between at least twousers 102 of a subset of a larger user group.

As shown in FIG. 1, an example user group can include only three users102 a, 102 b and 103 c. However, in alternative implementations, anexample user group can include multiple users on the order of tens,hundreds or even thousands of users. Likewise, a subset of the largeruser group can also include multiple users and will generally include atleast two users 102. As indicated above, each user device 104 a/b/cincludes a corresponding display 120 a/b/c. Display 120 a can include anexample user interface (UI) 124, display 120 b can include an exampleuser interface (UI) 126, and display 102 c can include an example userinterface (UI) 128.

System 100 includes a computing device/server 108 that receives datasignals 107, e.g., non-transitory propagating signals, from at least oneor more user devices 102 a/b/c. As shown, server 108 can include aconnection analysis module 114, a data signal analysis module 116, andan event detection module 118. In some implementations, server 108 caninclude additional or fewer modules and system 100 can include one ormore additional servers or computing devices. Modules 114, 116, and 118are generally representative of connection analysis and data signalprocessing functions that can be executed by server 108. Modules 114,116, 118 are described in more detail below with reference to FIG. 2.

As used in this specification, the term “module” is intended to include,but is not limited to, one or more computers configured to execute oneor more software programs that include program code that causes aprocessing unit(s) of the computer to execute one or more functions. Theterm “computer” is intended to include any data processing device, suchas a desktop computer, a laptop computer, a mainframe computer, apersonal digital assistant, a server, a handheld device, or any otherdevice able to process data.

FIG. 2 illustrates a diagram including module-grouping 200 associatedwith an example computing device of the computing system of FIG. 1. Insome implementations, module-grouping 200 is associated with server 108of system 100 and, for example, can be disposed within server 108 or caninclude independent computing devices that collectively are coupled toand in data communication with server 108. Module grouping 200 generallyincludes modules 214, 216, and 218. In some implementations, module 214can correspond to the connection analysis module of system 100, module216 can correspond to the data signal analysis module of system 100, andmodule 218 can correspond to the event detection module of system 100.

The description of the implementations of FIG. 2 and FIG. 3 willreference the above described features of FIG. 1. As discussed above,system 100 can determine that users within a subset of a larger usergroup are connected to each other, and thus, may share a connection thatpredates the occurrence of a particular shared event. As described inthis specification, a “connection” will correspond primarily to avirtual or electronic based connection that is detected or determined toexist based on analysis, by system 100, of data signals associated withuser devices 104 a/b/c.

In general, system 100 can be implemented, in part, by execution ofprogram code in the form of an executable application, otherwise knownas an “app,” that can be launched or executed from user device 104a/b/c. Upon execution of the application program code, the app can thenestablish a data connection with server 108 to transmit data signals toserver 108 as well as receives data signals from server 108. In someimplementations, once launched from an example user device 104 a/b/c,system 100 can be granted certain permissions by users 102 a/b/c. Thepermissions can cause system 100 to, for example, have access to dataassociated with one or more other application programs or apps storedwithin a memory unit of user devices 104 a/b/c.

In general, system 100 can be granted permissions to access dataassociated with example applications such as, social media applications,email applications, messaging applications, contacts applications,global positioning system (GPS) applications, proximity connectionapplications, e.g., Bluetooth Low Energy (BLE), Near FieldCommunications (NFC), digital image acquisition or camera applications,virtual meeting/conferencing applications, and online gamingapplications.

System 100 can also be granted permissions to access data associatedwith one or more sensor based applications that include functionalityassociated with accelerometers, gyroscopes, compasses, or any othersensory application. In some implementations, system 100 can be givenpermission, by users 102 a/b/c, to access data associated with allapplications or executable program code stored within corresponding userdevices 104 a/b/c.

Module 214 can be configured to access data associated with theapplication programs of user device 104 a/b/c to detect or determine ifone or more connections exist among users within a large user group. Insome implementations, Alice and Bob can share, for example, a connectionthrough one or more social media applications. In one aspect, Alice andBob can be connected, e.g., are “friends,” through an example socialmedia or networking application such as Google+™. A variety of othersocial media applications can be used as a basis for system 100 todetermine or detect that a connection exists between users of a subset.

In general, detection of a shared connection by system 100 can indicate,for example, that users of a subset have at least corresponded with eachother prior to occurrence of the shared event. In some instances, users102 a/b—Alice and Bob may be stored as contacts in each other's userdevice 104 or may be associated with the same social group of aparticular social network or social media application. In someimplementations, module 214 can scan data communications associated withemail or messaging accounts, e.g., Gmail™ and Google Chat™, managed byusers 102 a/b/c to detect or determine that a connection exists amongusers within the larger user group.

In other implementations, module 214 can scan data associated withonline activities associated with users 102 a/b/c such as, for example,data exchanged between users during online gaming sessions, hash-taggingor re-tweeting data communications of certain users, or “liking” certaincontent posted or uploaded by users within the larger user group. Insome instances, module 214 can scan data associated with onlineactivities that occur within a predefined timespan. For example, onlineactivities may include groups that are formed on an ad-hoc basis and,thus, users in the groups may not have easily detectable connectionsthat predate the occurrence of the shared event. Hence, certaintime-spans can be predefined so that a shared event can be detected foran example scenario in which ad-hoc groups of users share participationin a particular event, such as, an augmented reality game. In otherinstances, after determining that a shared connection exists among users102 a/b/c within the larger user group, server 108 can use the sharedconnection data to identify, from a set of users 102 a/b/c, a subset ofusers, e.g., Alice and Bob.

In some implementations, system 100 receives, by way of module 216, datasignals that indicate a current context of users 102 a/b/c. For example,the current context of users 102 a/b/c can be a physical environment ora virtual environment. In alternative implementations, after determiningthat a shared connection exists among certain users 102 a/b/c and/orafter receiving a current context of certain users 102 a/b/c, server 108can use the connection data and the current context data to alsoidentify, from a set of users 102 a/b/c, a subset of users.

For a given subset of users, i.e., Alice and Bob, module 216 can beconfigured to access and analyze data signals associated with certainapplication programs of user device 104 a and user device 104 b.Responsive to the user connection analysis described above and the datasignal analysis, system 100 can detect or determine that a shared event,among Alice and Bob, is either occurring in real-time or has occurredduring a past time period. In some implementations, system 100 can useseveral available signals transmitted by user device 104 a/b todetermine whether Alice and Bob are taking part or took part in a sharedevent.

For example, module 216 can receive and analyze a variety of differentdata signals transmitted by user device 104 a/b during execution ofcertain application programs stored on the user devices. In someimplementations, user device 104 a and user device 104 b each transmitone or more sets of data signals that are received by module 216 ofserver 108. For example, module 216 can receive data signals fromrespective user device 104 a/b corresponding to at least one oflocation/GPS data, ambient noise level data, proximity/BLE/NFC data,digital image data such as pictures, video, etc., or internet activitydata such as streaming content. Module 216 can also receive data signalscorresponding to one or more sensor based applications on user device104 a/b that include device accelerometer data, device gyroscope data,device compass data, or any other data signals associated with othermovement based sensory applications of user device 104 a/b.

As indicated above, system 100 can receive data signals that indicate acurrent context, e.g., physical or virtual environment, of users 102a/b/c. In some implementations, the data signals described in thepreceding paragraph are compared between at least two users of a subsetof user. The data signals may indicate a current context of the at leasttwo users as well as information indicating certain attributes of thecurrent context. For example, the data signals can indicate that acurrent context of the at least two users is a physical environment suchas a restaurant. Further, certain attributes of the current context canindicate the relative location of the restaurant or other venue locationas well as temporal characteristics of a current context, e.g., data andtime.

System 100, can compare the current context of the users within thesubset, e.g., Alice and Bob. In general, a comparison of the currentcontext can include a comparison of parameter values associated withdata signals of each user device 104 a/b within the subset of users. Insome implementations, comparing parameter values associated with datasignals of each user device 104 a/b includes system 100 receiving afirst set of data signals from user device 104 a and a second set ofdata signals from user device 104 b. Additionally, comparing theparameter values can further include detecting an overlap in a valueassociated with the first set of data signals and a value associatedwith the second set of data signals.

In some implementations, the overlap or substantial match in parametervalues indicates a probability of an occurrence of the shared event. Forexample, if the comparison shows that parameter values provided by userdevices 104 a/b of each user 102 a/b in the subset either overlap invalue or have values that substantially match, then system 100 candetermine that users in the subset are participating in, or associatedwith, the same event. In some instances, a first parameter value cansubstantially match a second parameter value if one value is within apredefined threshold of the other value. Example thresholds fordetecting whether a first parameter value substantially matches a secondparameter value can include, one value being within 25%, 50%, or 75% ofthe other value. The preceding thresholds are examples, and a variety ofthreshold values can be implemented depending, for example, on the typesof parameters that are being compared.

Regarding comparisons of data signals indicating GPS, proximity orlocation data, system 100 can, for example, compare latitude andlongitude positional data for each of user 102 a/b. In someimplementations, system 100 detects or determines the occurrence of ashared event among users 102 a/b in response to determining that Aliceis within a threshold proximity to Bob or that Bob is within a thresholdproximity of Alice. For example, parameter values for location data,e.g., latitude and longitude, transmitted by user device 104 a—Alice canbe compared with parameter values for location data transmitted by userdevice 104 b—Bob.

In one instance, the relative parameters are compared to determine ifthere is an overlap or a substantial match between the respectivevalues. In another instance, the respective locations of user 102 a and102 b are compared to determine if, for example, Alice is within onefoot, five feet, or 10 feet of Bob. In some implementations, thethreshold proximity/location for detection of the occurrence of a sharedevent is that Alice is at least within one foot of Bob or that Bob is atleast within one foot of Alice.

The following are example shared events that can be detected by system100 based on certain analysis functions performed by system 100: 1) agroup of friends/users having dinner together and system 100 analyzeslocation, GPS, or proximity data signals transmitted by each user deviceto detect that a first user is within a threshold proximity of otherusers in a subset; 2) in a shared event, one of the participants/user islooking up information on the internet and system 100 detects that aparticular web search is being performed while a first user is within athreshold proximity of another user in the subset of users; 3) a groupof users within the subset are going to the cinema jointly and system100 detects that one of the attendants/user searched for movie showtimes of a particular movie being shown at a theater that is within athreshold proximity of another user in the subset of users; 4) a groupof users within a subset are attending a party and system 100 analyzescalendar events, or email/messaging communications stored in each userdevice to detect that a first user is attending the same party/socialevent as other users in the subset; 5) a group of users are in the samegeneral area and digital images, videos, or photos captured by a userdevice of a user in the subset are geo-tagged and scanned by system 100to detect that other users within the subset are either viewable withinthe captured digital image/video or are within a threshold proximity ofthe location in which the images/videos were captured.

Additional example shared events and corresponding analysis functions ofsystem 100 can include: 6) an online gaming session, e.g., type of game,time/date game is played, console used to play the game, etc., in whichdata transmissions associated with the session are received and analyzedby system 100 to detect that users within a subset are associated withthe same computer game or gaming session; 7) a video conference orvirtual meeting and system 100 scans/analyzes the meeting invite list orother data attributes associated with the virtual meeting to detect ordetermine that at least two users of the subset or each associated withthe same online meeting/video conference; 8) noise levels occurring aparticular entertainment venue and system 100 analyzes data signalsassociated with ambient noise levels transmitted by user devices todetect that a first user is in a noise environment, e.g., at a concert,that is within a threshold decibel level of other users in the subset;9) a group of users are in the same general area and system 100 receivesand analyzes movement sensor data signals—e.g., abrupt/erraticacceleration data indicative of a roller coaster ride at an amusementpark—transmitted by a user device of a user in the group and detectsthat that the user shares movement sensor data that overlaps with, orsubstantially matches, movement data associated with other users in thesubset; 10) a group of users at a shared sports activity such as arunning event and system 100 analyzes location, GPS, or proximity datasignals as well as sports app data signals transmitted by each userdevice to detect that a first user is participating in the same sportsactivity as other users in the subset.

Module 218 can be configured to access data associated with theapplication programs of user device 104 a/b/c to detect or determinewhether the shared event is associated with a physical environment or avirtual environment. Additionally, module 218 can include at least oneprobability module that utilizes program code, such as machine learningalgorithms, and that receives and analyzes multiple data signalsassociated with the application programs of user device 104 a/b/c. Theprobability module can be used to develop predictive models that detector determine the occurrence of a shared event within a certain degree ofaccuracy. In some implementations, based on outcomes calculated by thepredictive models, a probability metric can be generated that indicatesthe probability that a shared event is taking place or has taken placebetween a subset of users. System 100 can also be programmed or trainedto indicate the occurrence of a shared event in response to theprobability metric exceeding a threshold probability metric.

In some implementations, system 100 can receive, analyze, and correlatethe data signals across users that share a connection. In general, theabove-mentioned probability metric can correspond to a likelihood of theoccurrence of a shared event. Hence, the likelihood that a shared eventis taking place or took place can increase based on the determinedprobability metric exceeding a threshold probability metric. In someimplementations, system 100 can determine the likelihood, i.e.,generating the probability metric, in a variety of ways, includingapplication of machine learning principles. For example, certain machinelearning principles, such as integration of neural networks or logisticregression, can be applied to standard correlation measures. Moreparticularly, a shared event probability module of system 100 caninclude a set of adjusted thresholds, or a cascade of programmedtriggers.

As discussed above, a variety of data signals can be transmitted tosystem 100 from user device 104 a/b/c. Hence, in some implementations,the thresholds or programmed triggers can initiate in response to system100 detecting certain similarity factors associated with data signalparameter values that are evaluated or compared by server 108 or module216. Machine learning based probability modules of system 100 can thenbe adjusted or trained based on a set of collected positive and negativeuse case models. For example, positive use case modules can include oneor more actual detected shared events based on overlapping/matchingparameter values and confirmation from user 102 a/b indicating thatAlice is indeed with Bob or that Bob is indeed with Alice. Negative usecase models can include one or more false positive or incorrect sharedevent detections based on marginally overlapping/matching parametervalues and/or no confirmation from user 102 a/b indicating that Alice iswith Bob or that Bob is with Alice.

FIG. 3 is a flow diagram of an example process 300 for automaticdetection of an event shared among at least two users of a user group.At block 302 of process 300, system 100 receives data indicating acurrent context of a first user 102 a—Alice. In some implementations,the current context can indicate that Alice is at Morton's Steakhouse ona Friday night around Bpm eastern standard time (EST). The data signalscan be received from/provided by a first computing device 104 a that isassociated with Alice. For example, Alice, while waiting at Morton's,can launch, from her mobile device 104 a, an example applicationprogram, “Event app,” associated with processes executed by system 100.Alice can then grant Event app permission to access, at least, alocation app and a contacts app on her mobile device and transmitAlice's location data and contacts to server 108.

At block 304, system 100 identifies, based on the current context offirst user 102 a, a subset of users 102 a/b—Alice and Bob from a set ofusers 102 a/b/c—Alice, Bob, and Charlie associated with the first user102 a. For example, Bob may also have Event app loaded on his mobiledevice 104 b and may also have granted permissions to Event app toaccess Bob's location app, contacts app, or social media account. Inthis example, system 100 scans Alice's contact list and locates contactinformation associated with Bob. Likewise, system 100 scans Bob'scontact list and locates contact information associated with Alice.System 100 can then determine that Alice and Bob share a connectionbased on the corresponding located contact information. In response todetecting that a shared connection exists between Alice and Bob, system100 then forms a subset of users that includes Alice and Bob.

At block 306, system 100 receives, from a second computing device 104 bassociated with at least one other user, namely Bob, of the subset ofusers 102 a/b, data indicating a current context of the at least oneother user. For example, as discussed above, the current context canindicate that Bob is also at Morton's Steakhouse on a Friday nightaround Bpm EST. Likewise, Bob, while also waiting at Morton's, canlaunch, from his mobile device 104 b, Event app and transmit hislocation data to server 108.

At block 308, system 100 compares the current context of the first user102 a—Alice with the current context of the at least one other user 102b—Bob. For example, system 100 can compare data signals associated withGPS/location data transmitted to server 108 from Alice's mobile devicewith data signals associated with GPS/location data transmitted toserver 108 from Bob's mobile device.

At block 310, based on the comparing step at block 308, system 100determines that a shared event is presently occurring or has occurred.System 100 detects or determines the occurrence of a shared event amongusers 102 a/b in response to determining that Alice is within athreshold proximity of Bob or that Bob is within a threshold proximityof Alice. The threshold proximity for detection of a shared event can bethat Alice, while at Morton's, is at least within 10 feet of Bob or thatBob, while at Morton's, is at least within 10 feet of Alice. In certainimplementations, shared events can be physical events in which Alice andBob are co-located, or virtual events in which a group of usersparticipate jointly in an example online activity such as a videoconference or an online gaming session.

At block 312, system 100 indicates at least to the first user 102 a,that the shared event is presently occurring or has occurred. Forexample, system 100 can cause the Event app to display a notification,e.g., shown via UI 124, to Alice or to Bob, e.g., shown via UI 126, orto both Alice and Bob. The notification can include a sample textstatement indicating that system 100 has detected that Alice is with Bobor that Bob is with Alice. In some implementations, the notification canalso include information indicating the type of shared event/activity,“dinner @ Morton's Steakhouse,” and temporal data associated with theshared event. The temporal data can include a date and current time or adate and a time span of the shared event. Example time spans include: 1)from this evening until now; 2) since 1 hour ago; 3) until now, 4) stillon-going; 5) or since 8 pm until 10 minutes ago.

As noted above, FIGS. 1-3 have illustrated novel approaches forautomatically detecting the occurrence of a shared event. The remainingFIGS. 4-7 describe novel approaches for automatically providingactionable suggestions to at least one user associated with the detectedshared event. As will be discussed in more detail below, in response toautomatically detecting the occurrence of a shared event, a system andprocesses are described for suggesting one or more activities that arerelated to the shared event. Suggesting the activities can include, forexample, the system determining the type of shared event and anattribute of the shared event using data signals provided by a userdevice. Accordingly, actionable suggestions for activities associatedwith the shared event can be provided to the users based, in part, onthe type of event and an attribute of the event.

FIG. 4 is an example computing system 400 that provides actionablesuggestions of one or more activities. The implementation of FIG. 4 caninclude one or more features having corresponding reference numbers thatare also depicted in the implementation of FIGS. 1 and 2. Moreparticularly, in addition to the functionality described below, in someimplementations, system 400 can be also configured to execute allfunctionality described above with reference to the implementations ofFIGS. 1-3. Accordingly, descriptions for certain features discussedabove for system 100 can be referenced for equivalent features alsodepicted in system 400.

System 400 generally includes user devices 104 a/b/c and correspondingusers 102 a/b/c. System 400 further includes server 108 that receivesmultiple data signals 107 from each of user devices 104 a/b/c. As shown,server 108 can include a template repository 410 that includes a mealactivity template 414, a physical activity template 416, and a socialactivity template 418. In some implementations, template repository 410can reside in a storage medium of an example computing module associatedwith server 108. Server 108 can include multiple modules and system 400can include one or more additional servers or computing devices.Templates 414, 416, and 418 are generally representative of a variety ofactivities that can be suggested by server 108 in response to the serverdetermining that a shared event of a particular type is either presentlyoccurring or has occurred in the past. Template repository 410 andtemplates 414, 416, and 418 are related to features which are describedin more detail below with reference to FIG. 5 and FIG. 6.

In general, system 400 can detect the occurrence of an event. In someimplementations, the event can be a shared event in which participationin or association with the event can be shared among a subset of usersof a larger user group including each of users 102 a/b/c. User device104 a can provide data signals to server 108 that indicate context dataof user 102 a. The context data can be a parameter value that referencesan event context and/or an attribute of the event in which user 102 a isparticipating. For example, the context data can indicate that user 102a is associated with a shared event in a physical environment, such as arestaurant or bar/pub, or a virtual environment, such as an onlinemeeting.

In some implementations, detected events or detected shared events canbe manually or explicitly entered by user 102 a/b/c as user input touser device 104 a/b/c. For example, user 102 a can create a calendarinvite or event notification that includes user 102 b as an attendee.Thus, when the event corresponding to the calendar invite occurs, system400 can receive data signals 107 indicating the occurrence of an eventor shared event of a particular type. In other examples, user 102 a/b/ccan receive a UI notification, via user device 104 a, associated with anapplication program relating to a virtual/online meeting. User 102 a canprovide confirmation, via user input, that indicates attendance orparticipation in the virtual/online meeting. In response to providingthe user input, system 400 can receive data signals 107 indicating thatuser 102 a is associated with an event or shared event of a particulartype, e.g., virtual/online activity type, that is either presentlyoccurring or that occurred at a past time period.

In some implementations, system 400 can receive sets of parametersignals from devices 104 a/b of the respective users in a subset, i.e.,user 102 a and another user 102 b. The parameter signals can be used todetect or determine: 1) whether at least one of users 102 a/b isassociated with an event of a particular type; or 2) whether user 102 aand user 102 b are each associated with the same shared event of aparticular type. In general, server 108 executes a variety of functionsassociated with signals/parameter analysis, including probabilitydeterminations for reliable and accurate activity suggestions inresponse to detecting the occurrence of a shared event of a particulartype. Hence, in response to detecting the occurrence of the sharedevent, system 400 provides, to at least one user 102 a/b/c, actionablesuggestions corresponding to activities associated with the particulartype of the determined event.

In an example implementation, system 400 can provide a text display onuser device 104 a to indicate, to Alice, that Alice and Bob are bothinvolved in a shared event or common activity. Moreover, the textdisplay can include one or more output templates that include suggestedactivities that can be performed by Alice relative the detected eventtype. As shown, UI 424 of Alice's user device 104 a can include anotification that indicates system 400 has detected or determined thatAlice is having a meal with Bob. UI 424 further includes at least onetemplate that includes multiple suggested activities associated with anexample event such as eating a meal at a restaurant. As shown, thesuggested activities associated with eating a meal at a restaurant caninclude launching a tip calculator application from user device 104 a orusing a related application to split the payment amount of therestaurant bill/check.

In the implementation depicted in FIG. 4, UI 426 of Bob's user device104 b shows a “home screen” because system 400 has not received contextdata, from user device 104 b, that indicates Bob's participation in anevent of a particular type. However, in alternative implementations,Bob's user device 104 b can provide multiple data signals, to server108, that include context data relating to a particular event in whichBob is participating or has participated in at a past time period. Assuch, in some implementations, UI 426 can also include one or moretemplates including suggested activities that can be performed by Bobrelative to the detected event type.

In some implementations, system 400 can provide a text display on userdevice 104 c to indicate, to Charlie, that the system has detected ordetermined that Charlie is participating in an event of a particulartype. Moreover, the text display can include one or more outputtemplates that include suggested activities that can be performed byCharlie relative to the detected event type. As shown, UI 428 ofCharlie's user device 104 c can include a notification that indicatessystem 400 has determined that Charlie is engaging in an example socialactivity such as consuming a beer/drink at a local bar/tavern, or thatCharlie is engaging in an example physical activity such as going for arun in a local park. UI 428 further includes at least one outputtemplate that includes multiple suggested activities associated with theexample social and physical events in which Charlie is engaged in.

In general, processes carried out by system 400 can be associated withevents or activities that occur in connection with environment 406. Inthe implementation of FIG. 4, environment 406A can be a physicalenvironment such as a restaurant or related dining establishment.Similarly, environment 406B can be an alternate physical environmentsuch as a local pub/tavern, a certain outdoor area, or a certain indoorfitness venue in which one or more individuals engage in variousphysical activities. In some implementations, environments 406 a/b caninclude a variety of different environment types relating to any virtualenvironment 406, any physical environment 406, or any mixed environment406 including attributes of both virtual and physical settings.

FIG. 5 illustrates example output activity templates 500 that areassociated with server 108 of system 400. In general, output activitytemplates 500 can include multiple output templates having multipleactivities that can be selected for output by system 400 as activitysuggestions to users 102 a/b/c. As shown, activity templates 500 caninclude an example meal activity template 514, an example physicalactivity template 516, and an example social activity template 518.Example templates 514, 516, and 518 can each directly correspond to theactivity templates depicted in the implementation of FIG. 4.

As discussed above, system 400 is configured to provide activitysuggestions to one or more users 102 a/b/c in response to detecting thatthe one or more users are participating in, or are associated with, anevent of a particular type or a shared event of a particular type. Asdiscussed in more detail with reference to FIG. 6, system 400 canprovide one or more activity suggestions by, for example, analyzing datasignals received from user devices 104 a/b/c. Analyzing the data signalsallows system 400 to determine an attribute associated with an exampleshared event in which a subset of users are jointly participating.

In particular, parameter values of the data signals can indicate thatthe users are associated with a particular type of shared event.Accordingly, based, at least in part, on the type of the detected sharedevent and/or at least one attribute associated with the detected sharedevent, a particular output template can be selected by system 400 fromamong multiple output activity templates 500. The selected outputtemplate can then be provided to the one or more users 102 a/b/c thatare associated with the detected shared event.

As shown in FIG. 5, server 108 can be used by system 400 to select aparticular output activity template from a variety of example outputactivity templates 500. In some implementations, activity templates 514,516, 518, and 520 can reside in a storage medium of an example computingmodule associated with server 108. In general, a single output templateor multiple output templates can be selected to be provided to the oneor more users 102 a/b/c associated with the detected shared event. Theselected output template(s) can include multiple actionable suggestionsfor a variety of activities associated with the detected shared event.In some implementations, at least one activity suggestion that isincluded in at least one output template can be a suggestion that a usershares certain digital or electronic content with one or moremembers/users within a subset of users or at least one user that is notwithin the subset of users.

In general, system 400 can receive context data via data signals 107.The context data can indicate that one or more users 102 a/b/c areassociated with an event relating to a meal activity event type, aphysical activity event type, a social activity event type and/oranother event type that may or may not have an association with theaforementioned event types. In some implementations, the context datacan include data referencing an attribute of the shared event. Forexample, context data received by server 108 can include parametersignals, e.g., location data or data relating to a social media statusupdate, indicating that users 102 a/b are each sharing a meal at arestaurant. More particularly, the attribute data associated with theshared dining event can indicate that users 102 a/b are each located atRestaurant X. Accordingly, system 400 can be configured to select mealactivity template 514 and generate a notification for output that isprovided to at least user 102 a.

The notification can include multiple suggested actions or activitiesthat correspond to the detected shared event, i.e., a meal activityevent type. For example, at least one suggested action can includeproviding a link to, or otherwise enabling, user 102 a to access anelectronic representation of menus available at Restaurant X. Additionalsuggested actions can include enabling user 102 a to: launch a paymentapplication for paying the restaurant bill/check; launch a tipcalculator application; launch a bill sharing application to perhapssplit the bill/check with another user participating in the meal event;launch an example social media application to tag users thatparticipated in the meal event; or launch an example restaurant reviewapplication, such as, e.g., Yelp®, TripAdvisor®, or restaurant reviewsaccessible via search engines such as Google search.

In another example, context data received by server 108 can includeparameter signals, e.g., accelerometer and/or gyroscope data, indicatingthat at least one user 102 a/b/c is participating or engaged in aphysical activity event of a particular type. More specifically,attribute data, e.g., a GPS parameter signal, associated with thephysical activity event can indicate that user 102 c is running in thepark or exercising at Gym X. Accordingly, system 400 can be configuredto select physical activity template 516 and generate a notification foroutput that is provided to at least user 102 c.

The notification can include multiple suggested actions or activitiesthat correspond to the detected event, i.e., a physical activity eventtype. For example, at least one suggested action can include providing alink to, or otherwise enabling, user 102 c to access program code thattracks, records, and/or incrementally saves the number of steps thatuser 102 c takes while walking/running during a given time period.Additional suggested actions can include enabling user 102 c to: launcha fitness application for tracking fitness metrics or goals; launch arunning application for monitoring running metrics/goals or for taggingother users involved in a certain running event; or launch a caloriecount application for tracking and/or monitoring caloric intake during agiven time period.

In another example, context data received by server 108 can includeparameter signals, e.g., location data, calendar event data, or ambientnoise data, indicating that at least one user 102 a/b/c is participatingor engaged in a social/entertainment activity event of a particulartype. More specifically, attribute data, e.g., a GPS parameter signal,associated with the social activity event can indicate that user 102 cis having a beer or enjoying cocktails at a local bar/lounge or dancingat a certain party or concert venue. Accordingly, system 400 can beconfigured to select social activity template 518 and generate anotification for output that is provided to at least user 102 c.

The notification can include multiple suggested actions or activitiesthat correspond to the detected event, i.e., a social activity eventtype. For example, at least one suggested action can include providing alink to, or otherwise enabling, user 102 c to access an electronicrepresentation of cocktail/drink menus available at the local bar/pub.Additional suggested actions can include enabling user 102 c to: launchan example ride sharing application such as Uber® or Lyft®; launch a tipcalculator application; or launch an example bar/pub review application,such as, e.g., Yelp®, TripAdvisor®, or pub reviews accessible via searchengines such as Google search. In some implementations, a suggestedaction can include enabling user 102 c to launch an example social eventindicator application that is configured to propose one or moreadditional bar or lounge venues that user 102 c can visit at a latertime period.

In yet another example, context data received by server 108 can includeparameter signals, e.g., image/video data, online activity data, orvirtual meeting data, indicating that one or more users 102 a/b/c areparticipating or engaged in an activity event or shared event of aparticular type. More specifically, attribute data associated with theshared event can indicate that, for example, users 102 a/b/c are eachconversing at the same local coffee shop or are each participating inthe same virtual meeting, online gaming session, or chat session.Accordingly, system 400 can be configured to select one or more activitytemplates 514, 516, 518, or 520 and generate a notification for outputthat is provided to at least one user 102 a/b/c.

The notification can include multiple output templates and/or multiplesuggested actions or activities that correspond to the detected sharedevent. For example, at least one suggested action can include providinga link to, or otherwise enabling, users 102 a/b/c to: launch an examplesocial media application to tag users participating in the coffee shopdiscussion or to tag users participating in the online activity session;launch an image/video application that allows sharing of certain digitalcontent with the other users; launch an example chat/virtual meetingapplication that allows a user to instantiate private chat sessions orprivate meeting notifications; launch an example internet data sharingapplication that allows a user to provide certain digital contentaccessible from online resources to the other users; or launch acalendar application to instantiate a calendar event that can includeone or more of the other users.

In some implementations, suggested actions or activities associated witha first activity template can be included within, or also associatedwith, a second activity template that is different from the firstactivity template. For example, suggested activities of template 514 canbe included within at least one or all of templates 516, 518, or 520.Likewise, suggested activities of: 1) template 516 can be includedwithin at least one or all of templates 514, 518, or 520; 2) template518 can be included within at least one or all of templates 514, 516, or520; and 3) template 520 can be included within at least one or all oftemplates 514, 516, or 518. Accordingly, with regard to FIG. 5, eachexample suggested activity depicted as being included within aparticular activity template can also be included within any otheractivity template 514, 516, 518, and 520.

The following are example actionable suggestions that can be providedfor output to at least one user 102 a/b/c through a notificationgenerated by system 400. In some implementations, the notification isgenerated in response to system 400 detecting the occurrence of a sharedevent based, at least in part, on signal analysis functions performed bysystem 400.

The example actionable suggestions can include: 1) a group offriends/users having dinner together and system 400 analyzes attributedata associated with the shared dinner event to automatically suggest topay and/or split the restaurant bill using a payment service applicationaccessible from user device 104 a/b/c; 2) in a shared event, one of theparticipants/users is searching for information on the internet andsystem 400 detects that a particular web search is being performed andautomatically suggests to share the internet data or web search resultsto other users 102 a/b/c associated with the shared event; and 3) agroup of users are going to the cinema jointly and system 400 detectsthat one of the attendants/user searched for movie show times of aparticular movie being shown at a theater and automatically suggests toshare interesting bits of information/internet data about the movie, forexample, after the movie has ended. In particular, if after the movieone of the users 102 a/b/c searched for details about an actor, the usercould be prompted or asked by system 400 if the user desires to share aparticular interesting piece of information with other users of thegroup.

The example actionable suggestions can further include: 4) a group ofusers 102 a/b/c are attending a party and system 400 analyzes calendarevents, or email/messaging communications stored in each user device 104a/b/c to detect that a first user is attending the same party/socialevent as other users in the group and automatically suggests to tagother users in pictures, suggests to contribute to the party musicplaylist, suggests to share the party music playlist with other users,and/or suggests to share recipes from the snacks that were prepared forthe party/social event; 5) a group of users are in the same general areaand digital images, videos, or photos captured by a user device of auser in the group are geo-tagged and scanned by system 400 and system400 automatically suggests that the user share captured digitalimage/video with other users in the group; and 6) an online gamingsession in which data transmissions associated with the session arereceived and analyzed by system 400 to detect that users 102 a/b/c areeach associated with the same gaming session and system 400automatically suggests to set up a dedicated chat channel for at leasttwo users in the session.

The example actionable suggestions can still further include: 7) a videoconference or virtual meeting and system 400 scans/analyzes dataattributes associated with the virtual meeting to determine that atleast two users 102 a/b/c are each associated with the same onlinemeeting and automatically suggests to share meeting notes, suggests toshare screens during the meeting, and/or suggests to add action itemsfrom the meeting to the users to-do list or instantiate a calendar eventto capture the action; 8) a group of users 102 a/b/c are in the samegeneral area, such as having a discussion in a coffee shop, and system400 automatically suggests to create a group chat, such as an SMStext-based group chat that includes other users participating in theshared event to enable sharing of digital content via the SMS groupchat; and 9) a group of users at a sports activity such as a runningevent and system 400 analyzes user device location data, GPS data, orproximity data signals to detect that a first user is participating inthe same sports activity as other users and system 400 automaticallysuggests to tag the other users in an example running application orinstantiate a group chat session to share digital content with the otherusers.

FIG. 6 illustrates a diagram including module grouping 600 associatedwith an example computing device of the computing system of FIG. 4. Insome implementations, module grouping 200 is associated with server 108of system 400 and, for example, can be disposed within server 108 or caninclude independent computing devices that collectively are coupled to,and in data communication with, server 108. Module grouping 600generally includes activity template modules 614, event attributeanalysis module 616, and activity suggestion module 618.

In some implementations, activity template module 614 can includetemplate repository 410. Hence, as indicated above, template repository410 can reside in an example storage medium of activity template module614. In some implementations, each of the output activity templatesdescribed above with reference to FIG. 5 can be stored within, andaccessible from, activity template module 614 and/or template repository410. Accordingly, system 400 can access a variety of output templatesfrom activity template module 614 to generate a notification for outputto user device 104 a/b/c that includes a particular output template.

In general, much like system 100, system 400 can be implemented, inpart, by execution of program code in the form of an executableapplication, otherwise known as an “app,” that can be launched orexecuted from user device 104 a/b/c. Upon execution of the applicationprogram code, the app can then establish a data connection with server108 to transmit data signals 107 to server 108 as well as receive datasignals 107 from server 108. In some implementations, once launched froman example user device 104 a/b/c, system 400 can be granted certainpermissions by users 102 a/b/c. The permissions can cause system 400 to,for example, have access to data associated with one or more otherapplication programs or apps stored within a memory unit of user devices104 a/b/c.

In some implementations, system 400 receives, through signals 107, datathat indicates a current context of users 102 a/b/c. For example, thecurrent context of users 102 a/b/c can be a physical environment 406a/b, a virtual environment 406 a/b, or a mixed environment 406 a/b. Insome implementations, event attribute analysis module 616 can beassociated with, or disposed within, event detection module 118 describeabove with reference to FIG. 1 and FIG. 2. Hence, after receiving acurrent context of certain users 102 a/b/c, server 108 of system 400 canuse event attribute analysis module 616 to analyze one or more datasignals that reference attributes of a particular shared event detectedby event detection module 118.

In some implementations, example attributes of a detected shared eventof a particular type can include the relative location of the sharedevent, the time and date of the occurrence of the shared event, aparticular venue associated with the shared event, ambient noise levelsassociated with the shared event; or parameter values of data signalsbeing transmitted from computing devices which are associated with theshared event. In general, data referencing an attribute of a sharedevent or activity can include a variety of parameter signals that can beanalyzed to discern a particular characteristic or attribute that iseither unique to, or generally associated with, the shared event oractivity.

Event attribute analysis module 616 can be configured to access andanalyze data signals 107 associated with certain application programs ofuser device 104 a/b/c. Responsive to the data signal analysis, system400 can detect or determine that a shared event is either occurring inreal-time or has occurred during a past time period. More particularly,responsive to the data signal analysis, system 400 can determineparticular attributes or characteristics associated within the sharedevent that can be used, processed, or further analyzed to generate anotification for output. The notification for output can be generatedusing a particular output template that is associated with theparticular type of the shared event.

Activity suggestion module 618 can also receive and process a variety ofdifferent data signals 107 transmitted by user device 104 a/b/c duringexecution of certain application programs stored on the user devices. Insome implementations, system 400 can provide several available datasignals 107 transmitted by user device 104 a/b/c to activity suggestionmodule 618. Activity suggestion module 618 can use the data signals 107to determine and/or select a particular output template includingmultiple activity suggestions based, in part, on the detected sharedevent type and/or one or more attributes of the detected event. In someimplementations, activity suggestion module 618 can be configured toaccess module 614 to select, from among multiple output templates thatare each associated with a different type of shared event, a particularoutput template associated with the particular type of shared event thatevent detection module 118 has determined is presently occurring or hasoccurred.

In general, modules 614, 616 and 618 cooperate to: 1) analyze parametervalues associated with data signals of a user device 104 a/b/c, 2)identify a particular output template from among multiple outputtemplates in template repository 410, and 3) generate a notificationthat includes a particular output template that includes one or moreactionable suggestions for activities reasonably related to theparticular type of shared event.

In some implementations, certain parameter values can be processed andanalyzed by machine learning logic 620 of activity suggestion module618. Machine learning logic 620 can be used to train probability modelsassociated with activity suggestion module 618. The probability modelscan be used to determine a probability that a selected output activitytemplate has a threshold association with a detected shared event of aparticular type. For example, machine learning logic 620 can receive andmonitor data signals 107 that correspond to example click-through ratesassociated with a particular output activity template selected to beprovided as output to user device 104 a/b/c.

For instance, system 400 can generate a notification for output usingmeal activity template 514. User input to user device 104 a/b/c canindicate that user 102 a/b/c selected, clicked-through, or otherwiseexecuted an actionable suggestion included in template 514. Inparticular, user 102 a/b/c may have selected the actionable suggestionin template 514 when the user is known by system 400 to be dining atRestaurant X. Hence, if user 102 a/b/c selects or clicks-through aparticular actionable suggestion included in template 514 while dining,or having dined at an earlier time period, at restaurant X, then machinelearning logic 620 can use the signal data as a positive use case forrefining or training an example probability model.

In some implementations, module 618 and/or machine learning logic 620can include at least one probability module that utilizes program code,such as machine learning algorithms, and that receives and analyzesmultiple data signals 107 associated with application programs of userdevice 104 a/b/c. The probability module can be used to developpredictive template models that determine, within a certain degree ofaccuracy, a particular output activity template to be selected. In someimplementations, based on outcomes calculated by the predictive templatemodels, a probability metric can be generated that indicates theprobability that a particular output template has a reasonableassociation to a detected shared event.

In some implementations, at least one machine-learning algorithmassociated with module 618 or logic 620 can receive data referencingmultiple attributes associated with a detected shared event or activityevent. During execution of the at least one machine-learning algorithm,the multiple attributes can be utilized by, for example, module 618 totrain a predictive template model used by system 400 to identify aparticular output template to be provided to user device 104 a/b/c. Insome implementations, the template model can be trained topredict/identify the particular output template in response to aprobability metric associated with activity suggestions exceeding athreshold probability metric.

Accordingly, system 400 can be programmed/trained to select an outputtemplate having certain actionable suggestions based on a thresholdcharacteristic of a probability metric. In general, the probabilitymetric can correspond to a likelihood that a user 102 a/b/c will select,click-through or otherwise execute an actionable suggestion includedwithin a particular output template. Hence, the likelihood that anactionable suggestion associated with a particular output template willbe selected by a user can increase based on the determined probabilitymetric exceeding a particular threshold. In some implementations, system400 can determine the likelihood, i.e., generating the probabilitymetric, in a variety of ways, including application of the variety ofmachine learning principles and threshold triggers discussed above withreference to FIG. 1 and FIG. 2.

FIG. 7 is a flow diagram of an example process for actionablesuggestions of one or more activities. At block 702 of process 700, anindication is received that event detection module 118 has determinedthat a shared event of a particular type is presently occurring or hasoccurred. In some implementations, system 400 can receive, from userdevice 104 a, data referencing an attribute associated with the detectedshared event. In some implementations, event detection module 118 canalso receive context data associated with the shared event thatindicates a particular type of the shared event. For example, theparticular type can be a shared event associated with a meal activityevent type, a physical activity event type, a social activity eventtype, or any other general activity event type. In one implementation,context data and attribute data can indicate, for example, that Aliceand Bob are having dinner at Morton's Steakhouse on a Friday nightaround 8 pm eastern standard time (EST).

At block 704, system 400 selects a particular output template from amongmultiple output templates that are each associated with a different typeof shared event. In particular, the selected particular output templatecan be associated with the particular type of shared event that eventdetection module 118 has determined is presently occurring or hasoccurred. As discussed above, system 400 can use machine-learningalgorithms to train predictive template models that can be used toselect an output template having certain actionable suggestions based ona threshold characteristic of a probability metric. The probabilitymetric can correspond to a likelihood that Alice will select,click-through or otherwise execute an actionable suggestion includedwithin the selected particular output template.

At block 706, system 400 generates a notification for output using atleast (i) the particular output template associated with the particulartype of detected shared event, and (ii) the data referencing theattribute associated with the detected shared event. At block 708 ofprocess 700, system 400 provides, for output to user device 104 a/b/c,the notification that is generated using at least (i) the particularoutput template, and (ii) the data referencing the attribute associatedwith the shared event of the particular type. For example, system 400can provide the generated notification to Alice's smartphone, e.g., userdevice 104 a.

As discussed above, data signals 107 associated with context data andattribute data can indicate that Alice and Bob are having dinner atMorton's Steakhouse on a Friday night around 8 pm EST. Hence, theparticular output template associated with the particular type of thedetected shared event can include meal activity template 514. In somealternative implementations, social activity template 518 and/or otheractivity template 520 can also be associated with a shared event thatincludes dinner at Morton's Steakhouse on a Friday night.

In some implementations, when system 400 provides the generatednotification to Alice, UI 424 of Alice's smartphone will display anotification that indicates to Alice that an application programassociated with system 400 has detected or determined that Alice ishaving dinner with Bob. Moreover, the notification can include theselected output template and the output template can include multipleactionable suggestions that Alice can select, click-through, orotherwise execute from her smartphone. In some implementations,suggested activities that are selected by Alice can be flagged oridentified as additional context data and provided to system 400 as datasignals 107. The additional context data can be further identified aspositive use case models that are utilized by, for example, machinelearning logic 620 to train or further refine various predictivetemplate models.

Embodiments of the subject matter and the functional operationsdescribed in this specification can be implemented in digital electroniccircuitry, in tangibly-embodied computer software or firmware, incomputer hardware, including the structures disclosed in thisspecification and their structural equivalents, or in combinations ofone or more of them. Embodiments of the subject matter described in thisspecification can be implemented as one or more computer programs, i.e.,one or more modules of computer program instructions encoded on atangible non-transitory program carrier for execution by, or to controlthe operation of, data processing apparatus.

Alternatively or in addition, the program instructions can be encoded onan artificially-generated propagated signal, e.g., a machine-generatedelectrical, optical, or electromagnetic signal that is generated toencode information for transmission to suitable receiver apparatus forexecution by a data processing apparatus. The computer storage mediumcan be a machine-readable storage device, a machine-readable storagesubstrate, a random or serial access memory device, or a combination ofone or more of them.

A computer program, which may also be referred to or described as aprogram, software, a software application, a module, a software module,a script, or code, can be written in any form of programming language,including compiled or interpreted languages, or declarative orprocedural languages, and it can be deployed in any form, including as astand-alone program or as a module, component, subroutine, or other unitsuitable for use in a computing environment. A computer program may, butneed not, correspond to a file in a file system.

A program can be stored in a portion of a file that holds other programsor data, e.g., one or more scripts stored in a markup language document,in a single file dedicated to the program in question, or in multiplecoordinated files, e.g., files that store one or more modules,sub-programs, or portions of code. A computer program can be deployed tobe executed on one computer or on multiple computers that are located atone site or distributed across multiple sites and interconnected by acommunication network.

The processes and logic flows described in this specification can beperformed by one or more programmable computers executing one or morecomputer programs to perform functions by operating on input data andgenerating output. The processes and logic flows can also be performedby, and apparatus can also be implemented as, special purpose logiccircuitry, e.g., an FPGA (field programmable gate array) or an ASIC(application-specific integrated circuit).

FIG. 8 is a block diagram of computing devices 800, 850 that may be usedto implement the systems and methods described in this document, eitheras a client or as a server or plurality of servers. Computing device 800is intended to represent various forms of digital computers, such aslaptops, desktops, workstations, personal digital assistants, servers,blade servers, mainframes, and other appropriate computers. Computingdevice 850 is intended to represent various forms of mobile devices,such as personal digital assistants, cellular telephones, smartphones,smartwatches, head-worn devices, and other similar computing devices.The components shown here, their connections and relationships, andtheir functions, are meant to be exemplary only, and are not meant tolimit implementations described and/or claimed in this document.

Computing device 800 includes a processor 802, memory 804, a storagedevice 806, a high-speed interface 808 connecting to memory 804 andhigh-speed expansion ports 810, and a low speed interface 812 connectingto low speed bus 814 and storage device 806. Each of the components 802,804, 806, 808, 810, and 812, are interconnected using various busses,and may be mounted on a common motherboard or in other manners asappropriate. The processor 802 can process instructions for executionwithin the computing device 800, including instructions stored in thememory 804 or on the storage device 806 to display graphical informationfor a GUI on an external input/output device, such as display 816coupled to high speed interface 808. In other implementations, multipleprocessors and/or multiple buses may be used, as appropriate, along withmultiple memories and types of memory. Also, multiple computing devices800 may be connected, with each device providing portions of thenecessary operations (e.g., as a server bank, a group of blade servers,or a multi-processor system).

The memory 804 stores information within the computing device 800. Inone implementation, the memory 804 is a computer-readable medium. In oneimplementation, the memory 804 is a volatile memory unit or units. Inanother implementation, the memory 804 is a non-volatile memory unit orunits.

The storage device 806 is capable of providing mass storage for thecomputing device 800. In one implementation, the storage device 806 is acomputer-readable medium. In various different implementations, thestorage device 806 may be a floppy disk device, a hard disk device, anoptical disk device, or a tape device, a flash memory or other similarsolid state memory device, or an array of devices, including devices ina storage area network or other configurations. In one implementation, acomputer program product is tangibly embodied in an information carrier.The computer program product contains instructions that, when executed,perform one or more methods, such as those described above. Theinformation carrier is a computer- or machine-readable medium, such asthe memory 804, the storage device 806, or memory on processor 802.

The high-speed controller 808 manages bandwidth-intensive operations forthe computing device 800, while the low speed controller 812 manageslower bandwidth-intensive operations. Such allocation of duties isexemplary only. In one implementation, the high-speed controller 808 iscoupled to memory 804, display 816 (e.g., through a graphics processoror accelerator), and to high-speed expansion ports 810, which may acceptvarious expansion cards (not shown). In the implementation, low-speedcontroller 812 is coupled to storage device 806 and low-speed expansionport 814. The low-speed expansion port, which may include variouscommunication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet)may be coupled to one or more input/output devices, such as a keyboard,a pointing device, a scanner, or a networking device such as a switch orrouter, e.g., through a network adapter.

The computing device 800 may be implemented in a number of differentforms, as shown in the figure. For example, it may be implemented as astandard server 820, or multiple times in a group of such servers. Itmay also be implemented as part of a rack server system 824. Inaddition, it may be implemented in a personal computer such as a laptopcomputer 822. Alternatively, components from computing device 800 may becombined with other components in a mobile device (not shown), such asdevice 850. Each of such devices may contain one or more of computingdevice 800, 850, and an entire system may be made up of multiplecomputing devices 800, 850 communicating with each other.

Computing device 850 includes a processor 852, memory 864, aninput/output device such as a display 854, a communication interface866, and a transceiver 868, among other components. The device 850 mayalso be provided with a storage device, such as a microdrive or otherdevice, to provide additional storage. Each of the components 850, 852,864, 854, 866, and 868, are interconnected using various buses, andseveral of the components may be mounted on a common motherboard or inother manners as appropriate.

The processor 852 can process instructions for execution within thecomputing device 850, including instructions stored in the memory 864.The processor may also include separate analog and digital processors.The processor may provide, for example, for coordination of the othercomponents of the device 850, such as control of user interfaces,applications run by device 850, and wireless communication by device850.

Processor 852 may communicate with a user through control interface 858and display interface 856 coupled to a display 854. The display 854 maybe, for example, a TFT LCD display or an OLED display, or otherappropriate display technology. The display interface 856 may compriseappropriate circuitry for driving the display 854 to present graphicaland other information to a user. The control interface 858 may receivecommands from a user and convert them for submission to the processor852. In addition, an external interface 862 may be provided incommunication with processor 852, so as to enable near areacommunication of device 850 with other devices. External interface 862may provide, for example, for wired communication (e.g., via a dockingprocedure) or for wireless communication (e.g., via Bluetooth or othersuch technologies).

The memory 864 stores information within the computing device 850. Inone implementation, the memory 864 is a computer-readable medium. In oneimplementation, the memory 864 is a volatile memory unit or units. Inanother implementation, the memory 864 is a non-volatile memory unit orunits. Expansion memory 874 may also be provided and connected to device850 through expansion interface 872, which may include, for example, aSIMM card interface. Such expansion memory 874 may provide extra storagespace for device 850, or may also store applications or otherinformation for device 850. Specifically, expansion memory 874 mayinclude instructions to carry out or supplement the processes describedabove, and may include secure information also. Thus, for example,expansion memory 874 may be provided as a security module for device850, and may be programmed with instructions that permit secure use ofdevice 850. In addition, secure applications may be provided via theSIMM cards, along with additional information, such as placingidentifying information on the SIMM card in a non-hackable manner.

The memory may include for example, flash memory and/or MRAM memory, asdiscussed below. In one implementation, a computer program product istangibly embodied in an information carrier. The computer programproduct contains instructions that, when executed, perform one or moremethods, such as those described above. The information carrier is acomputer- or machine-readable medium, such as the memory 864, expansionmemory 874, or memory on processor 852.

Device 850 may communicate wirelessly through communication interface866, which may include digital signal processing circuitry wherenecessary. Communication interface 866 may provide for communicationsunder various modes or protocols, such as GSM voice calls, SMS, EMS, orMMS messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000, or GPRS, among others.Such communication may occur, for example, through radio-frequencytransceiver 868. In addition, short-range communication may occur, suchas using a Bluetooth, WiFi, or other such transceiver (not shown). Inaddition, GPS receiver module 870 may provide additional wireless datato device 850, which may be used as appropriate by applications runningon device 850.

Device 850 may also communicate audibly using audio codec 860, which mayreceive spoken information from a user and convert it to usable digitalinformation. Audio codec 860 may likewise generate audible sound for auser, such as through a speaker, e.g., in a handset of device 850. Suchsound may include sound from voice telephone calls, may include recordedsound (e.g., voice messages, music files, etc.) and may also includesound generated by applications operating on device 850.

The computing device 850 may be implemented in a number of differentforms, as shown in the figure. For example, it may be implemented as acellular telephone 880. It may also be implemented as part of asmartphone 882, personal digital assistant, or other similar mobiledevice.

Various implementations of the systems and techniques described here canbe realized in digital electronic circuitry, integrated circuitry,specially designed ASICs, computer hardware, firmware, software, and/orcombinations thereof. These various implementations can includeimplementation in one or more computer programs that are executableand/or interpretable on a programmable system including at least oneprogrammable processor, which may be special or general purpose, coupledto receive data and instructions from, and to transmit data andinstructions to, a storage system, at least one input device, and atleast one output device.

These computer programs, also known as programs, software, softwareapplications or code, include machine instructions for a programmableprocessor, and can be implemented in a high-level procedural and/orobject-oriented programming language, and/or in assembly/machinelanguage. As used herein, the terms “machine-readable medium”“computer-readable medium” refers to any computer program product,apparatus and/or device, e.g., magnetic discs, optical disks, memory,Programmable Logic Devices (PLDs) used to provide machine instructionsand/or data to a programmable processor, including a machine-readablemedium that receives machine instructions as a machine-readable signal.The term “machine-readable signal” refers to any signal used to providemachine instructions and/or data to a programmable processor.

To provide for interaction with a user, the systems and techniquesdescribed here can be implemented on a computer having a display device,e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor,for displaying information to the user and a keyboard and a pointingdevice, e.g., a mouse or a trackball, by which the user can provideinput to the computer. Other kinds of devices can be used to provide forinteraction with a user as well; for example, feedback provided to theuser can be any form of sensory feedback, e.g., visual feedback,auditory feedback, or tactile feedback; and input from the user can bereceived in any form, including acoustic, speech, or tactile input.

The systems and techniques described here can be implemented in acomputing system that includes a back-end component, e.g., as a dataserver, or that includes a middleware component such as an applicationserver, or that includes a front-end component such as a client computerhaving a graphical user interface or a Web browser through which a usercan interact with an implementation of the systems and techniquesdescribed here, or any combination of such back-end, middleware, orfront-end components. The components of the system can be interconnectedby any form or medium of digital data communication such as, acommunication network. Examples of communication networks include alocal area network (“LAN”), a wide area network (“WAN”), and theInternet.

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other.

Further to the descriptions above, a user may be provided with controlsallowing the user to make an election as to both if and when systems,programs or features described herein may enable collection of userinformation (e.g., information about a user's social network, socialactions or activities, profession, a user's preferences, or a user'scurrent location), and if the user is sent content or communicationsfrom a server. In addition, certain data may be treated in one or moreways before it is stored or used, so that personally identifiableinformation is removed. For example, in some embodiments, a user'sidentity may be treated so that no personally identifiable informationcan be determined for the user, or a user's geographic location may begeneralized where location information is obtained (such as to a city,ZIP code, or state level), so that a particular location of a usercannot be determined. Thus, the user may have control over whatinformation is collected about the user, how that information is used,and what information is provided to the user.

A number of embodiments have been described. Nevertheless, it will beunderstood that various modifications may be made without departing fromthe spirit and scope of the invention. For example, various forms of theflows shown above may be used, with steps re-ordered, added, or removed.Also, although several applications of the payment systems and methodshave been described, it should be recognized that numerous otherapplications are contemplated. Accordingly, other embodiments are withinthe scope of the following claims.

While this specification contains many specific implementation details,these should not be construed as limitations on the scope of what may beclaimed, but rather as descriptions of features that may be specific toparticular embodiments. Certain features that are described in thisspecification in the context of separate embodiments can also beimplemented in combination in a single embodiment. Conversely, variousfeatures that are described in the context of a single embodiment canalso be implemented in multiple embodiments separately or in anysuitable subcombination. Moreover, although features may be describedabove as acting in certain combinations and even initially claimed assuch, one or more features from a claimed combination can in some casesbe excised from the combination, and the claimed combination may bedirected to a subcombination or variation of a subcombination.

Similarly, while operations are depicted in the drawings in a particularorder, this should not be understood as requiring that such operationsbe performed in the particular order shown or in sequential order, orthat all illustrated operations be performed, to achieve desirableresults. In certain circumstances, multitasking and parallel processingmay be advantageous. Moreover, the separation of various system modulesand components in the embodiments described above should not beunderstood as requiring such separation in all embodiments, and itshould be understood that the described program components and systemscan generally be integrated together in a single software product orpackaged into multiple software products.

Particular embodiments of the subject matter have been described. Otherembodiments are within the scope of the following claims. For example,the actions recited in the claims can be performed in a different orderand still achieve desirable results. As one example, the processesdepicted in the accompanying figures do not necessarily require theparticular order shown, or sequential order, to achieve desirableresults. In some cases, multitasking and parallel processing may beadvantageous.

What is claimed is:
 1. A computer-implemented method, comprising:receiving (i) an indication that an event detection module hasdetermined that a shared event of a particular type is presentlyoccurring or has occurred, and (ii) data referencing an attributeassociated with the shared event; selecting, by a computing system, fromamong multiple output templates that are each associated with adifferent type of shared event, a particular output template associatedwith the particular type of shared event that the event detection modulehas determined is presently occurring or has occurred; generating, bythe computing system, a notification for output using at least (i) theparticular output template associated with the particular type of sharedevent determined to be presently occurring or determined to have alreadyoccurred, and (ii) the data referencing the attribute associated withthe shared event; and providing, for output to a user device, thenotification that is generated using at least (i) the particular outputtemplate, and (ii) the data referencing the attribute associated withthe shared event of the particular type.
 2. The method of claim 1,further comprising: providing, by the computing system and to one ormore user devices, at least one activity suggestion associated with theshared event, the at least one activity suggestion being based, in part,on at least one of: (i) the particular type of the shared event; or (ii)the data referencing the attribute associated with the shared event. 3.The method of claim 1, wherein selecting the particular output templateassociated with the particular type of shared event comprises: using, bythe computing system, one or more machine-learning algorithms based onanalysis of the received data referencing the attribute associated withthe shared event; and in response to using the one or moremachine-learning algorithms, determining, by the computing system, theparticular output template to be selected.
 4. The method of claim 3,wherein at least one machine-learning algorithm receives datareferencing a plurality of attributes associated with the shared event,the plurality of attributes being utilized, during execution of the atleast one machine-learning algorithm, to train a template model used bythe computing system to select the particular output template.
 5. Themethod of claim 4, further comprising: training, by the computingsystem, the template model to predict the particular output template tobe selected, the template model being trained to predict the particularoutput template based on a probability metric associated with anactivity suggestion exceeding a threshold probability metric.
 6. Themethod of claim 1, wherein generating the notification for outputcomprises: providing, by the computing system and to a particular user,an activity suggestion and an application program associated with theactivity suggestion, the application program being configured for use ona user device associated with the particular user.
 7. The method ofclaim 1, wherein each output template of the multiple output templatesindicates at least one activity suggestion and indicates one or moreattributes of the at least one activity suggestion.
 8. The method ofclaim 1, wherein the notification for output is provided to at least oneuser device associated with at least one user of a subset of users. 9.An electronic system comprising: one or more processing devices; one ormore machine-readable storage devices for storing instructions that areexecutable by the one or more processing devices to perform operationscomprising: receiving (i) an indication that an event detection modulehas determined that a shared event of a particular type is presentlyoccurring or has occurred, and (ii) data referencing an attributeassociated with the shared event; selecting, by the electronic system,from among multiple output templates that are each associated with adifferent type of shared event, a particular output template associatedwith the particular type of shared event that the event detection modulehas determined is presently occurring or has occurred; generating, bythe electronic system, a notification for output using at least (i) theparticular output template associated with the particular type of sharedevent determined to be presently occurring or determined to have alreadyoccurred, and (ii) the data referencing the attribute associated withthe shared event; and providing, for output to a user device, thenotification that is generated using at least (i) the particular outputtemplate, and (ii) the data referencing the attribute associated withthe shared event of the particular type.
 10. The electronic system ofclaim 9, further comprising: providing, by the electronic system and toone or more user devices, at least one activity suggestion associatedwith the shared event, the at least one activity suggestion being based,in part, on at least one of: (i) the particular type of the sharedevent; or (ii) the data referencing the attribute associated with theshared event.
 11. The electronic system of claim 9, wherein selectingthe particular output template associated with the particular type ofshared event comprises: using, by the electronic system, one or moremachine-learning algorithms based on analysis of the received datareferencing the attribute associated with the shared event; and inresponse to using the one or more machine-learning algorithms,determining, by the electronic system, the particular output template tobe selected.
 12. The electronic system of claim 11, wherein at least onemachine-learning algorithm receives data referencing a plurality ofattributes associated with the shared event, the plurality of attributesbeing utilized, during execution of the at least one machine-learningalgorithm, to train a template model used by the electronic system toselect the particular output template.
 13. The electronic system ofclaim 12, further comprising: training, by the electronic system, thetemplate model to predict the particular output template to be selected,the template model being trained to predict the particular outputtemplate based on a probability metric associated with an activitysuggestion exceeding a threshold probability metric.
 14. The electronicsystem of claim 13, wherein generating the notification for outputcomprises: providing, by the electronic system and to a particular user,an activity suggestion and an application program associated with theactivity suggestion, the application program being configured for use ona user device associated with the particular user.
 15. The electronicsystem of claim 9, wherein each output template of the multiple outputtemplates indicates at least one activity suggestion and indicates oneor more attributes of the at least one activity suggestion.
 16. Theelectronic system of claim 9, wherein the notification for output isprovided to at least one user device associated with at least one userof a subset of users.
 17. A computer-implemented method, comprising:receiving an indication that an event detection module has determinedthat an event of a particular type is presently occurring or hasoccurred; selecting, by a computing system, a particular output templateassociated with the particular type of event that the event detectionmodule has determined is presently occurring or has occurred;generating, by the computing system, a notification for output using atleast the particular output template associated with the particular typeof event determined to be presently occurring or determined to havealready occurred; and providing, for output to a user device, thenotification that is generated using at least the particular outputtemplate.
 18. The method of claim 17, further comprising: providing, bythe computing system and to one or more user devices, at least oneactivity suggestion associated with the event, the at least one activitysuggestion being based, in part, on at least one of: (i) the particulartype of the event; or (ii) data referencing an attribute associated withthe event.
 19. The method of claim 18, wherein selecting the particularoutput template associated with the particular type of event comprises:using, by the computing system, one or more machine-learning algorithmsbased on analysis of the received data referencing the attributeassociated with the event; and in response to using the one or moremachine-learning algorithms, determining, by the computing system, theparticular output template to be selected.
 20. The method of claim 19,wherein at least one machine-learning algorithm receives datareferencing a plurality of attributes associated with the event, theplurality of attributes being utilized, during execution of the at leastone machine-learning algorithm, to train a template model used by thecomputing system to select the particular output template.